package cn.tedu.charging.cost.pojo;

import cn.tedu.charging.common.pojo.param.ChargingProcessParam;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 充电数据
 * 次数 总度数 价格
 * 1次   10   20    11:00 高峰 2块钱
 * 2次   20   40    12:00 低峰 1块钱
 * 3次   29   58    13:00 高峰 2块钱
 * 4次   40   80    14:00 低峰 1块钱
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ChargingData {

    /**
     * 订单编号
     */
    String orderNo;

    /**
     * 枪id
     */
    Integer gunId;

    /**
     * 总金额20.32 如何用long来表示 20.321 * 1000 = 20321
     * BigDecimal非常适合金融和货币计算，可以提供任意精度的算术运算，并且可以精确地控制舍入行为
     */
    BigDecimal totalCost;

    /**
     * 充电度数
     */
    float chargingCapacity;

    /**
     * 总度数
     */
    float totalCapacity;

    /**
     * 每度电的费用
     * 注意高峰低峰电价，每次同步都要附上当前地区、运营商、时间的单价。尖、峰、平、谷等不同时段
     * 不过前端显示的单价，是总价/总度数来显示的？？？
     */
    BigDecimal currentOneFee;

    /**
     * 充电开始时间   如果要精准的话，不能用订单创建时间，要用桩的充电时间？？不应该是用给客户发送的订单开始时间么？？
     */
    LocalDateTime startTime;

    /**
     * 保存最后一次桩的反馈数据入参
     */
    ChargingProcessParam lastChargingProcess;

    /**
     * 用户id     13.1添加，给用户推送的充电消息需要
     */
    Integer userId;
}
